perm filename TMP.SAI[TMP,BGB] blob
sn#069857 filedate 1973-11-05 generic text, type C, neo UTF8
COMMENT ⊗ VALID 00006 PAGES
C REC PAGE DESCRIPTION
C00001 00001
C00002 00002 BEGIN "TMP"
C00003 00003 α CRE LINKS & DATUMS
C00005 00004 SUBR PDPY (ITG PGN) α POLYGON DISPLAY
C00012 00005 SUBR FLMDPY α FILM DISPLAY
C00013 00006 α INPUT CRE NODES
C00015 ENDMK
C⊗;
BEGIN "TMP"
REQUIRE "ABBREV[SYS,BGB]" SOURCE_FILE;
REQUIRE "SAITRG[SYS,BGB]" SOURCE_FILE;
REQUIRE "DPYIII[SYS,BGB]" SOURCE_FILE;
SAFE ITG ARRAY DPYBUF[1:1000];
DEFINE MAG="(32/9)";
ITG FLG,SIZE,ORIG;STRING STR;
α FILE OPENING & SIZE INPUT;
OPEN(1,"DSK",8,3,0,0,0,0);
DO ⊂ OUTSTR(9&"CRE FILE = ");
STR←INCHWL;LOOKUP(1,STR,FLG);
IF FLG THEN LOOKUP(1,STR&".CRE",FLG);
⊃ UNTIL ¬FLG;
SIZE ← WORDIN(1);
α MAIN EXECUTION BLOCK;
BEGIN "MAIN"
SAFE ITG ARRAY NODE[0:SIZE];
α CRE LINKS & DATUMS;
DEFINE CW(Q) = "(NODE[Q+0]LSH -18)";
DEFINE CCW(Q) = "(NODE[Q+0]LAND '777777)";
DEFINE DAD(Q) = "(NODE[Q+1]LSH -18)";
DEFINE SON(Q) = "(NODE[Q+1]LAND '777777)";
DEFINE ROW(Q) = "((NODE[Q+3]LSH -18)/64)";
DEFINE COL(Q) = "((NODE[Q+3]LAND '777777)/64)";
DEFINE ALT(Q) = "(NODE[Q+4]LSH -18)";
REAL SUBR AREA (ITG SHAPE); S⊂ MOVE 2,SHAPE;ADD 2,ORIG;HRLE 1,1(2);⊃;
REAL SUBR PERM (ITG SHAPE); S⊂ MOVE 2,SHAPE;ADD 2,ORIG;HLLE 1,1(2);⊃;
REAL SUBR PXY (ITG SHAPE); S⊂ MOVE 2,SHAPE;ADD 2,ORIG;HLLE 1,4(2);⊃;
REAL SUBR MXX (ITG SHAPE); S⊂ MOVE 2,SHAPE;ADD 2,ORIG;HLLE 1,6(2);⊃;
REAL SUBR MYY (ITG SHAPE); S⊂ MOVE 2,SHAPE;ADD 2,ORIG;HRLE 1,6(2);⊃;
REAL SUBR MZZ (ITG SHAPE); S⊂ MOVE 2,SHAPE;ADD 2,ORIG;HRLE 1,4(2);⊃;
REAL SUBR PHI (ITG S); RETURN(0.5*ATAN2(MYY(S)-MXX(S),2*PXY(S)));
SUBR PDPY (ITG PGN); α POLYGON DISPLAY;
BEGIN "PDPY"
ITG V0,V,S;
α TEST SHAPE NODE FOR QUEUE BALL OUTLINE;
S ← ALT(PGN);
IF AREA(S)≤600 ∨ AREA(S)≥1800 THEN RETURN;
α POLYGONS PERMETER;
V ← V0 ← SON(PGN);
AIVECT(MAG*(COL(V)-144),MAG*(108-ROW(V)));
DO BEGIN
V ← CCW(V);
AVECT(MAG*(COL(V)-144),MAG*(108-ROW(V)));
END UNTIL V=V0;
END "PDPY";
SUBR FLMDPY; α FILM DISPLAY;
BEGIN "FLMDPY"
ITG F,I0,I;
ITG L0,L,P0,P;
DPYSET(DPYBUF);
AIVECT(-511,-MAG*108);
AVECT(+511,-MAG*108);
AVECT(+511,+MAG*108);
AVECT(-511,+MAG*108);
AVECT(-511,-MAG*108);
F ← 0;
I0 ← I ← SON(F);
DO BEGIN "IMGDPY" α IMAGE DISPLAY;
L0 ← L ← SON(I);
L ← CCW(L);
P0 ← P ← SON(L);
DO PDPY(P) UNTIL P0=(P←CCW(P));
END "IMGDPY" UNTIL I0=(I←CCW(I));
DPYOUT(0);
END "FLMDPY";
α INPUT CRE NODES;
NODE[0] ← SIZE;
ARRYIN(1,NODE[1],SIZE-1);
ORIG ← LOCATION(NODE[0]);
RELEASE(1);
OUTSTR(9&"EOF."&↓);
α DISPLAY THE CRE FILM;
FLMDPY;
WHILE TRUE DO INCHRW;
END "MAIN";
END "TMP";